import java.util.Arrays;

/**
 * Creat with IntelliJ IDEA
 * Description:
 * User:WZW
 * Date:2021-10-25
 * Time:21:53
 */
public class test {

    /*
    实现一个方法 avg, 以数组为参数, 求数组中所有元素的平均值(注意方法的返回值类型).
     */
    public static float avg(int[] arr){
        float sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum/arr.length;
    }

    /*
    实现一个方法 sum, 以数组为参数, 求数组所有元素之和.
     */
    public static int sum(int[] arr){
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }

    /*
    实现一个方法transform,以数组为参数, 循环将数组中的每个元素乘以2,并设置到对应的数组元素上.
    例如原数组为{1, 2, 3},修改之后为{2, 4, 6}
     */
    public static void transform(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            arr[i] *= 2;
        }
    }

    /*
    实现一个方法 printArray, 以数组为参数, 循环访问数组中的每个元素, 打印每个元素的值.
     */
    public static void printArray(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }

    /*
    创建一个int类型的数组,元素个数为 100,并把每个元素依次设置为1 - 100
     */
    public static int[] func(int n){
        int[] ret = new int[n];
        for (int i = 0; i < n; i++) {
            ret[i] = i+1;
        }
        return ret;
    }

    /*
    给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
     */
    public static int findNum(int[] arr) {
        int n = 0;
        if(arr!=null){
            for (int i = 0; i < arr.length; i++) {
                n ^= arr[i];
            }
        }
        return n;
    }

    /*
    给定一个整型数组, 实现冒泡排序(升序排序)
     */
    public static int[] myBubbleSort(int[] arr) {
        if(arr==null) {
            return null;
        }else{
            for (int i = 0; i < arr.length-1; i++) {
                for (int j = 0; j < arr.length-1-i; j++) {
                    if(arr[j]>arr[j+1]){
                        int tmp = arr[j];
                        arr[j] = arr[j+1];
                        arr[j+1] = tmp;
                    }
                }
            }
        }
        return arr;
    }

    /*
    给定一个整型数组, 判定数组是否有序（递增）
     */
    public static String judge(int[] arr) {
        if(arr==null){
            return "null";
        }
        for (int i = 0; i < arr.length-1; i++) {
            if(arr[i]>arr[i+1]){
                return "NO";
            }
        }
        return "YES";
    }

    /*
    给定一个有序整型数组, 实现二分查找
     */
    public static int binarySearch(int[] arr,int n){
        if(arr==null){
            return -1;
        }
        int l = 0;
        int r = arr.length-1;
        while(l<=r){
            int mid = (l+r)/2;
            if(arr[mid]>n){
                r = mid-1;
            }else if(arr[mid]<n){
                l = mid+1;
            }else{
                return mid;
            }
        }
        return -1;
    }

    /*
    实现一个方法 copyOf, 对一个整型数组进行拷贝, 得到一个新的数组
     */
    public static int[] copyArray(int[] arr){
        if(arr==null)
            return null;
        int[] ret = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            ret[i] = arr[i];
        }
        return ret;
    }

    /*
    实现一个方法 toString, 把一个整型数组转换成字符串. 例如数组 {1, 2, 3} , 返回的字符串为 "[1, 2, 3]", 注意 逗号 的位置和数量.
     */
    public static String myToString(int[] arr){
        if(arr==null)
            return "null";
        String str = "[";
        for (int i = 0; i < arr.length; i++) {
            str = str+arr[i];
            if(i!=arr.length-1){
                str=str+",";
            }
        }
        return str+"]";
    }

    public static void main(String[] args) {
        int[] array = {1,2,3,4,5};
        System.out.println(myToString(array));
//        int[] array2 = copyArray(array);
//        System.out.println(Arrays.toString(array2));
//        System.out.println(binarySearch(array, 3));
//        int[] array2 = {2,3,1,4};
//        System.out.println(judge(array));
//        System.out.println(judge(array2));
//        int[] array = {9,8,7,6,5,4,3,2,1};
//        System.out.println(Arrays.toString(myBubbleSort(array)));
//        int[] arr = {4,1,2,1,2};
//        System.out.println(findNum(arr));
//        int[] arr = func(100);
//        System.out.println(Arrays.toString(arr));
//        int[] array = {1,2,3,4,4};
//        printArray(array);
//        transform(array);
//        System.out.println(Arrays.toString(array));
//        System.out.println(sum(array));
//        System.out.println(avg(array));
    }
}
